Skip to content

Added listener-side support bits for QUIC connection migration#9

Open
mishtak00 wants to merge 1 commit into
mainfrom
apple/gm/listener-quic-migration
Open

Added listener-side support bits for QUIC connection migration#9
mishtak00 wants to merge 1 commit into
mainfrom
apple/gm/listener-quic-migration

Conversation

@mishtak00

Copy link
Copy Markdown
  • Declared new hasMigrationInfo flag on PathProperties and wired it in ManyToManyProtocol
  • Propagated new path event to QUIC via attachLowerDatagramProtocolForNewPath

@agnosticdev

Copy link
Copy Markdown
Collaborator

It looks like testQUICSpinBitEnabledOrDisabled failed. Kicked off the tests again to see if this was an intermittent failure.

if path?.hasMigrationInfo == true { newPath.pathHasMigrationInfo = true }
multiplexingPaths[newPath.identifier] = newPath
if !isFirstPath {
handlePathChanged(path: newPath.identifier, event: .available, isPrimary: newPath.pathIsPrimary)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the event .available ? Shouldn't it be .established?
Why are we only sending an event when it's not the first path?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As it stands, .available gets fed to QUICConnection.handlePathChanged(.available), which calls path.changeState(to: .routeAvailable) and invokeEstablish(), which calls connect(). The .established event does beginValidation(), which is further down the line for migration. Are you suggesting we wiggle this state wiring a bit?

As for why not first path too, initialPath has a different treatment. See QUICConnection.swift:1291. From my understanding, first path is a different concept from primary path. How could we even kick off migration if the target path is the first path? Or are you saying we'd be migrating back to the initial path from a sojourn?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, available just means that the system told us we can attach a lower protocol to it. Here you are attaching a lower protocol already, so I thought it would be .established.

@mishtak00
mishtak00 force-pushed the apple/gm/listener-quic-migration branch from 1c7796f to b5489f0 Compare July 21, 2026 16:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants